home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 11
/
Cream of the Crop 11-2.iso
/
os2
/
rsynth1.zip
/
darray.h
< prev
next >
Wrap
C/C++ Source or Header
|
1994-11-08
|
1KB
|
47 lines
/* $Id: darray.h,v 1.13 1994/11/08 13:30:50 a904209 Exp a904209 $
*/
#if !defined(DARRAY_H)
#define DARRAY_H
typedef struct
{char *data; /* the items */
unsigned items; /* number of slots used */
unsigned alloc; /* number of slots allocated */
unsigned short esize; /* size of items */
unsigned short get; /* number to get */
} darray_t, *darray_ptr;
/* return pointer to nth item */
extern void *Darray_find PROTO((darray_t *a,unsigned n));
/* delete nth item */
extern int darray_delete PROTO((darray_t *a,unsigned n));
extern void darray_free PROTO((darray_t *a));
#if defined(__GNUC__)
static inline void darray_init(darray_t *a,unsigned size,unsigned get)
{
a->esize = size;
a->get = get;
a->items = a->alloc = 0;
a->data = NULL;
}
static inline void *darray_find(darray_t *a,unsigned n)
{
if (n < a->alloc && n < a->items)
return (void *) (a->data + n * a->esize);
return Darray_find(a,n);
}
#else
#define darray_init(a,sz,gt) \
((a)->esize = (sz), (a)->get = (gt), (a)->items = (a)->alloc = 0, (a)->data = NULL)
#define darray_find(a,n) \
(((n) < (a)->alloc && (n) < (a)->items) \
? (void *) ((a)->data + (n) * (a)->esize) \
: Darray_find(a,n))
#endif
#endif